<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSON的应用</title>
    <script src="../js/jquery-1.8.0.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            var sites = [
                {"name": "runoob", "url": "www.runoob.com"},
                {"name": "google", "url": "www.google.com"},
                {"name": "微博", "url": "www.weibo.com"}
            ];
            var name = sites[0].name;   //通过'.'获取属性值
            var name1 = sites[1]["name"];//通过双引号加属性名获取属性值
            sites[0].name = "郑亚波";  //改变json中节点的值

            //循环对象的属性,使用中括号（[]）来访问属性的值
            var myObj = {"name": "runoob", "alexa": 10000, "site": null};
            var keys = "";
            var values = "";

            for (x in myObj) {
                keys += x + ",";
                values += myObj[x] + ",";
            }

            var myobject = {
                "name": "Tom",
                "interest": {
                    "run": "跑步",
                    "swim": "游泳",
                    "singe": "唱歌"
                }
            };

            //使用点号(.)或者中括号([])来访问嵌套的 JSON 对象
            var interest = myobject.interest.run;
            interest = myobject.interest["swim"];
            //修改 JSON 对象的值
            myobject.interest["swim"] = "自由泳";
            //删除属性
            delete myobject.interest.run;

            var objs = {
                "name": "网站",
                "num": 3,
                "sites": ["Google", "Runoob", "Taobao"]
            }

            var x = "";
            for (var i in objs.sites) {
                x += objs.sites[i] + ",";
            }
            x = "";
            for (var i = 0; i < objs.sites.length; i++) {
                x += objs.sites[i] + ",";
            }

            //JSON 不能存储 Date 对象。
            // 如果你需要存储 Date 对象，需要将其转换为字符串。
            // 之后再将字符串转换为 Date 对象。
            var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';
            var obj = JSON.parse(text);
            obj.initDate = new Date(obj.initDate);

            var obj1 = JSON.parse(text, function (key, value) {
                if (key == "initDate") {
                    return new Date(value);
                } else {
                    return value;
                }});
            var date1=obj1.initDate;

            var arr = [ "Google", "Runoob", "Taobao", "Facebook" ];
            var myJSON = JSON.stringify(arr);
            myJSON=JSON.stringify(text);

            var txt = '{ "sites" : [' +
                '{ "name":"菜鸟教程" , "url":"www.runoob.com" },' +
                '{ "name":"google" , "url":"www.google.com" },' +
                '{ "name":"微博" , "url":"www.weibo.com" } ]}';
            var obj1 = eval ("(" + txt + ")");
            name=obj1.sites[0].name;

        })

    </script>

</head>
<body>
<div id="test1"></div>
<pre>
    JSON 语法是 JavaScript 对象表示语法的子集。<br/>
    数据在名称/值对中<br/>
    数据由逗号分隔<br/>
    大括号保存对象<br/>
    中括号保存数组<br/>
</pre>
<pre>
    JSON 数组在中括号中书写。

    JSON 中数组值必须是合法的 JSON 数据类型（字符串, 数字, 对象, 数组, 布尔值或 null）。

    JavaScript 中，数组值可以是以上的 JSON 数据类型，也可以是 JavaScript 的表达式，包括函数，日期，及 undefined。
</pre>

<pre>
   <b>JSON.parse()</b>
    JSON 通常用于与服务端交换数据。

    在接收服务器数据时一般是字符串。

    我们可以使用 JSON.parse() 方法将数据转换为 JavaScript 对象。
</pre>
<pre>
    <b>JSON.stringify()</b>
    JSON 通常用于与服务端交换数据。

    在向服务器发送数据时一般是字符串。

    我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。

    参数说明

    value:
    必需， 一个有效的 JSON 对象。

    replacer:
    可选。用于转换结果的函数或数组。

    如果 replacer 为函数，则 JSON.stringify 将调用该函数，并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined，则排除成员。根对象的键是一个空字符串：""。

    如果 replacer 是一个数组，则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。当 value 参数也为数组时，将忽略 replacer 数组。

    space:
    可选，文本添加缩进、空格和换行符，如果 space 是一个数字，则返回值文本在每个级别缩进指定数目的空格，如果 space 大于 10，则文本缩进 10 个空格。space 有可以使用非数字，如：\t。
</pre>
</body>
</html>